/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compilador.analisadorSintatico.classe;

import compilador.analisadorLexico.Token;
import compilador.analisadorLexico.TokenClass;
import compilador.analisadorSintatico.Producao;
import compilador.analisadorSintatico.TokenReader;
import compilador.analisadorSintatico.simboloGramatical.NaoTerminal;
import compilador.analisadorSintatico.simboloGramatical.SimboloGramatical;
import compilador.analisadorSintatico.simboloGramatical.Terminal;

/**
 *
 * @author Matheus Cardoso
 */
public class TIPO_RETORNO extends Producao{

    @Override
    public SimboloGramatical derivar() throws Exception {
        //throw new UnsupportedOperationException("Not supported yet.");
        
        TokenReader tokenReader = TokenReader.getInstance();
        
        Token token = null;
        
        token = tokenReader.seeCurrent();
        if(token.getTokenClass().equals(TokenClass.PALAVRA_RESERVADA) && token.getAtributo().toString().equals("char")){
           ((NaoTerminal) simbolo).add(new TIPO().derivar()); 
        }
        else if(token.getTokenClass().equals(TokenClass.PALAVRA_RESERVADA) && token.getAtributo().toString().equals("int")){
            ((NaoTerminal) simbolo).add(new TIPO().derivar());
        }
        else if(token.getTokenClass().equals(TokenClass.PALAVRA_RESERVADA) && token.getAtributo().toString().equals("void")){
            
            tokenReader.consome();
            ((NaoTerminal) simbolo).add(new Terminal(token));
            
        }
        else
             erro(this.getClass().getSimpleName()
                    + " mal formada - 'void' não encontrado");
        
        return simbolo;
    }

    @Override
    public void setSimbolo() {
        simbolo = new NaoTerminal(this.getClass().getSimpleName());
    }

}
